const app = getApp()
Component({
  properties: {
    // 是否显示气泡
    showBubble: {
      type: Boolean,
      value: true
    },
  },

  data: {
    messages: [], // 消息列表
    currentIndex: 0, // 当前显示的消息索引
    timer: null, // 定时器
    animation: null, // 动画对象
    isAnimating: false // 是否正在动画中
  },

  lifetimes: {
    attached() {
      // 初始化动画
      this.initAnimation();
      // 组件挂载时获取消息数据
      this.fetchMessages();
    },

    detached() {
      // 组件卸载时清除定时器
      if (this.data.timer) {
        clearInterval(this.data.timer);
      }
    }
  },

  methods: {
    // 初始化动画
    initAnimation() {
      this.setData({
        animation: wx.createAnimation({
          duration: 500,
          timingFunction: 'ease-in-out'
        })
      });
    },

    // 从后台获取消息数据
    fetchMessages() {
		let that = this;
		app.util.request({
		        url: 'Index/getqipaodata',
		        data: {},
		        success(res) {
					var data = res.data.data;
					console.log(data)
					that.setData({
					  messages: res.data.data
					}, () => {
					  // 数据设置完成后开始轮播
					  that.startRotation();
					});
		        },
				fail(e){
					console.warn('接口返回格式不正确或数据为空');
					that.useDefaultData();
				}
		})
    },

    // 使用默认数据
    useDefaultData() {
      this.setData({
        messages: [
          { user: '张**', action: '购买了家庭医生会员' },
          { user: '李**', action: '下单了康养套餐' },
          { user: '王**', action: '购买了家庭医生会员' },
          { user: '赵**', action: '租赁了康复器材' }
        ]
      }, () => {
        this.startRotation();
      });
    },

    // 开始消息轮播
    startRotation() {
      if (this.data.messages.length <= 1) return;

      // 清除已有定时器
      if (this.data.timer) {
        clearInterval(this.data.timer);
      }

      // 设置新定时器，每3秒切换一次消息
      const timer = setInterval(() => {
        this.changeMessage();
      }, 10000);

      this.setData({ timer });
    },

    // 切换消息并添加动画
    changeMessage() {
      if (this.data.isAnimating) return;
      
      this.setData({ isAnimating: true });
      
      // 先淡出
      this.data.animation.opacity(0).translateY(-20).step();
      this.setData({ animationData: this.data.animation.export() });
      
      setTimeout(() => {
        // 计算新索引
        let newIndex = this.data.currentIndex + 1;
        if (newIndex >= this.data.messages.length) {
          newIndex = 0;
        }
        this.setData({ currentIndex: newIndex });
        
        // 再淡入
        this.data.animation.opacity(1).translateY(0).step();
        this.setData({ 
          animationData: this.data.animation.export(),
          isAnimating: false
        });
      }, 1000);
    },

    // 隐藏气泡
    hideBubble() {
      this.setData({
        showBubble: false
      });
      
      // 触发关闭事件
      this.triggerEvent('bubbleClosed');
    }
  }
});
